Sélectionner et transformer des Series
Sélection sans ambiguïté
import pandas as pd
s = pd.Series([90, 80, 70], index=["Ada", "Lin", "Sam"], dtype="float64")
s.loc["Ada"] # une étiquette
s.loc[["Ada", "Sam"]] # plusieurs étiquettes
s.iloc[0] # première position
s.iloc[:3] # trois premières positions
s[s.ge(80)] # filtre booléen
Utilisez .loc pour les étiquettes et .iloc pour les positions, surtout lorsque l'index
contient lui-même des entiers. s[key] reste concis pour une étiquette sans ambiguïté,
mais les indexeurs explicites expriment mieux l'intention et résistent aux changements d'index.
Ordre de choix des transformations
- Utilisez l'arithmétique vectorisée native ou les accesseurs de chaînes et de dates.
- Utilisez
mappour une recherche scalaire ou une fonction élément par élément. - Utilisez
where,mask,replaceoufillnapour un remplacement conditionnel. - N'utilisez
applyqu'en l'absence d'une opération vectorisée plus claire.
normalized = (s - s.mean()) / s.std()
bands = s.map({90: "A", 80: "B"})
clipped = s.clip(lower=0)
Un dictionnaire transmis à map transforme les valeurs sans correspondance en valeurs manquantes.
Utilisez replace si elles doivent rester inchangées.
Combiner des Series
Utilisez pd.concat pour empiler les objets ou les placer côte à côte :
train, test = s.iloc[:2], s.iloc[2:]
actual, predicted = s, s + 5
stacked = pd.concat([train, test], ignore_index=True)
table = pd.concat([actual.rename("actual"), predicted.rename("predicted")], axis=1)
Series.append n'est pas l'API de combinaison. Avant une concaténation par colonnes,
vérifiez si l'alignement par étiquette est bien voulu.
Itération
Si elle est réellement nécessaire, s.items() produit des paires (étiquette, valeur).
N'itérez pas pour l'arithmétique ou les filtres courants : les expressions vectorisées sont plus claires et souvent plus rapides.
Résultats et hypothèses statistiques
Pour ces données, s.loc["Ada"] renvoie le scalaire 90.0, deux étiquettes donnent une Series de longueur 2 et le filtre garde Ada et Lin. Les transformations renvoient de nouvelles Series sans modifier s. bands contient "A", "B", puis une valeur manquante : il s’agit d’une correspondance exacte, pas d’intervalles de notes.
Series.std utilise le dénominateur d’échantillon (ddof=1) : moyenne 80, écart-type 10 et normalized égal à [1.0, 0.0, -1.0]. Utilisez ddof=0 pour l’écart-type de population. Une série constante a un écart-type nul ; moins de deux valeurs valides ne définissent pas l’écart-type d’échantillon. Prévoyez ces cas avant la division.